
const Router = require('@koa/router')//导入路由包
const router  = new Router()//实例化对象
const {UserModel} = require("../database/index");
const { where ,Op} = require('sequelize');
// const multer = require('@koa/multer'); // 导入 multer 包//处理表单字段formData,也可以处理文件上传
// const upload = multer(); // 配置 multer// 创建 multer 中间件

router

    .post('/login', async (ctx, next) => {
        const { username, password } = ctx.request.body;
        const result = await UserModel.findOne({ where: { uName: username } });
        // 是否存在
        if(!result){
            ctx.body = {
                code:404,
                msg:'fail'
            }
            return
        }
        // 检查密码
        if(result.uPassword !== password){
            ctx.body = {
                code:201,
                msg:'fail'
            }
            return
        }
        // 检查状态(0禁用 1正常)
        if(result.status === 0){
            ctx.body = {
                code:202,
                msg:'fail'
            }
            return
        }
         // 检查类别(0管理员1普通用户)
        if(result.type !== 0){
            ctx.body = {
                code:203,
                msg:'fail'
            }
            return
        }
        // 登录成功
        ctx.body = {
            code:200,
            msg:'success',
            data:result.toJSON()
        }
    })
    .post('/addUser',async (ctx, next) =>{
        const {username,type,status,sex,phone,password} = ctx.request.body
        const uImg = ctx.files[0].filename; // 获取上传的文件
        
        console.log("注册(新增)的数据:",username,password,status)
        try{
            const result = await UserModel.create({
                uName:username,
                type,
                status,
                uSex:sex,
                uPhone:phone,
                uPassword:password,
                uImg
            })
            console.log(result.toJSON())
            ctx.body = {
                code:200,
                msg:"success"
            }
        }catch(error){
            console.log(error)
            ctx.body = {
                code:500,
                msg:"fail"
            }
        }
    })

    // .post('/addUser',upload.none(),async (ctx, next) =>{
    //     const {username,type,status,sex,phone,password} = ctx.request.body
    //     const files = ctx.request.files; // 获取上传的文件
    //      // 打印上传的文件信息
    //     if (files) {
    //         for (const key in files) {
    //         console.log(`文件 ${key}:`, files[key]);
    //         }
    //     }
    //     console.log("注册(新增)的数据:",username,password,status)
    //     try{
    //         const result = await UserModel.create({
    //             uName:username,
    //             type,
    //             status,
    //             uSex:sex,
    //             uPhone:phone,
    //             uPassword:password,
    //             uImg:files
    //         })
    //         console.log(result.toJSON())
    //         ctx.body = {
    //             code:200,
    //             msg:"success"
    //         }
    //     }catch(error){
    //         console.log(error)
    //         ctx.body = {
    //             code:500,
    //             msg:"fail"
    //         }
    //     }
    // })
    
    .post('/checkUserPhone',async(ctx,next) =>{
        const {phone} = ctx.request.body
        const result = await UserModel.findOne({where:{uPhone : phone}})
         // 是否存在
         if(!result){
            ctx.body = {
                code:200,
                msg:'手机号没注册'
            }
            return
        }
        ctx.body = {
            code: 404,
            msg: '手机号已注册',
        };
    })

    .delete('/deleteUser', async (ctx, next) => {
        const u_id = ctx.query.u_id;
        console.log('删除的用户 ID:', u_id);
        try {
            const result = await UserModel.destroy({ where: { uId: u_id } });
            console.log('删除结果:', result); 
            if (result > 0) {
                ctx.body = {
                    code: 200,
                    msg: '删除成功'
                };
            } else {
                ctx.body = {
                    code: 404,
                    msg: '用户不存在'
                };
            }
        } catch (error) {
            console.error('服务器错误:', error);
            ctx.body = {
                code: 500,
                msg: '服务器错误'
            };
        }
    })

    .get('/getAllUsersByPage', async (ctx) => {
        const { type, username, currentPage = 1, pageSize = 10 } = ctx.request.query;
      
        // 过滤条件
        const where = {};
        if (type) {
          where.type = type; // 过滤用户类型
        }
        if (username) {
          where.uName = { [Op.like]: `%${username}%` }; // 模糊匹配用户名
        }
        // 获取总记录数
        const totalCount = await UserModel.count({ where });//计算查询的条数
        // 获取分页数据 select * from user limit 当前页数,页数的信息条数((下一页就是当前页-1)*信息条数)
        const offset = (currentPage - 1) * pageSize;//页码
        const users = await UserModel.findAll({
          where,
          limit: Number(pageSize),
          offset: offset,
        });
      
        // 返回结果
        ctx.body = {
          data: {
            rows: users,
            count: totalCount,
          },
        };
    })
    
    .post('/updateUser',async (ctx, next) =>{
        const {username,type,status,sex,phone,password,u_id} = ctx.request.body
        const uImg = ctx.files[0].filename; // 获取上传的文件

        console.log("修改的数据:",u_id,username,password)
        try{
            const result = await UserModel.update({
                uName:username,
                type,
                status,
                uSex:sex,
                uPhone:phone,
                uPassword:password,
                uImg
            },{
                where:{
                    uId:u_id
                }
            })
            // console.log(result.toJSON())
            ctx.body = {
                code:200,
                msg:"success"
            }
        }catch(error){
            console.log(error)
            ctx.body = {
                code:500,
                msg:"fail"
            }
        }
    })

// 导出
module.exports = router